/**
 * NeuronNetwork.java created by zhangzhidong 
 * at 上午10:04:32 2017年5月26日
 */
package cn.edu.bjtu.workbench.api;

import org.deeplearning4j.eval.Evaluation;
import org.nd4j.linalg.api.ndarray.INDArray;
import org.nd4j.linalg.dataset.api.iterator.DataSetIterator;

import cn.edu.bjtu.workbench.core.Deep4jModelType;

import org.deeplearning4j.nn.api.Layer;
import org.deeplearning4j.optimize.api.IterationListener;

/**
 * 这个接口里面的方法的层次比较低，一般实现这个接口的类都是将这些方法直接委托到 DEEP4J 里面的模型。
 * @author zhangzhidong<br>
 * comment generated at 2017年5月26日上午10:04:32<br>
 * 
 */
public interface NeuronNetwork {
	public INDArray[] output(INDArray... input);
	public void fit(DataSetIterator iterator) throws Exception ;
	public Evaluation evaluate(DataSetIterator iterator) throws Exception ;
	public void saveModel(String path) throws Exception ;
	public void load() throws Exception  ;
	public void init()throws Exception ;
	
	void setListeners(IterationListener ... listeners);
	Layer [] getLayers();
	
	Deep4jModelType getActualType();
	
}
